#ifndef GAME_H
#define GAME_H

#include "Singleton.h"

#include <QDebug>
#include <QList>


class VirtualComponent {
  public:
    virtual void Draw(){ qInfo()<<"VirtualComponent"; }
    virtual ~VirtualComponent(){}
};

class TextComponent: public VirtualComponent {
public:
  virtual void Draw(){ qInfo()<<"TextComponent"; }
  virtual ~TextComponent(){}
};

class Decorator: public VirtualComponent {
  public:
    Decorator(VirtualComponent* v){ _component = v; }
    virtual void Draw(){ qInfo()<<"Decorator"; _component->Draw(); }
    virtual ~Decorator(){}
private:
    VirtualComponent* _component;
};

class BorderDecorator: public Decorator {
public:
    BorderDecorator(VirtualComponent* v): Decorator(v)
    {
        _component = v;
    }
    virtual ~BorderDecorator(){}
    virtual void Draw(){ qInfo()<<"BorderDecorator"; _component->Draw(); }
private:
    VirtualComponent* _component;
};


#endif // GAME_H
